package outline;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ScrollPaneConstants;
import javax.swing.border.EmptyBorder;
import javax.swing.table.DefaultTableModel;

// 고급 컴퍼넌트(많은 데이터 표시)
// JList 		: 몇 가지 데이터 목록을 나란히 표시하고
// 				  한가지를 선택하게 함
// JComboBox	: 일명 dropdownlist 라고 함
// 				   평소에는 전체목록을 숨기고 있다가
// 				  클릭하면 전체 목록이 나타남
// 		     	 최종적으로 선택한 항목이 화면에 표시됨
// JTable		: 엑셀처럼 대량의 데이터들을
//				  표 형태로 나타냄
// 표는 대량의 데이터들을 행과 열형태로 표시한것
// JTable에서는 DefaultTableModel이라는 클래스를 이용해서 데이터를 표현함
// 테이블의 제목행은 1차원배열에 , 본문행은 2차원 배열에 작성 해 둔 다음
// DefaultTableModel의 매개변수로 전달
// 한편, 배열대신, Vector를 이용해서
// TableModel을 작성하기도 함
public class J21_AdvancedComponent2 extends JFrame {

	private JPanel contentPane;
	private JTable table;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					J21_AdvancedComponent2 frame = new J21_AdvancedComponent2();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public J21_AdvancedComponent2() {
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 450, 300);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		contentPane.setLayout(new BorderLayout(0, 0));
		setContentPane(contentPane);
		String[] datelist = { "김", "최", "이", "박", "김", "최", "이", "박", "김", "최",
				"이", "박", "김", "최", "이", "박" };

		JPanel panel_1 = new JPanel();
		panel_1.setPreferredSize(new Dimension(300, 100));
		contentPane.add(panel_1, BorderLayout.CENTER);

		// 테이블의 제목행 생성
		String[] tbtitle = { "번호", "이름", "국어", "영어", "수학" };
		// 테이블의 본문행 생성
		String[][] tbdata = { { "1", "이사람", "99", "88", "65" },
				{ "2", "저사람", "23", "88", "72" },
				{ "3", "그사람", "16", "18", "5" },
				{ "3", "그사람", "16", "18", "5" },
				{ "3", "그사람", "16", "18", "5" },
				{ "3", "그사람", "16", "18", "5" },
				{ "3", "그사람", "16", "18", "5" },
				{ "3", "그사람", "16", "18", "5" },
				{ "3", "그사람", "16", "18", "5" },
				{ "3", "그사람", "16", "18", "5" } };
		// 제목/본문행을 DefaultTableModel 클래스에 등록
		DefaultTableModel tbmodel = new DefaultTableModel(tbdata, tbtitle);

		JScrollPane scrollPane_1 = new JScrollPane();
		scrollPane_1.setPreferredSize(new Dimension(450, 300));
		panel_1.add(scrollPane_1);
		// JTable 생성자에 DefaultTableModel 클래스 전달
		table = new JTable(tbmodel);
		scrollPane_1.setViewportView(table);
	}

}
